﻿namespace TrueSync.Physics2D
{
    public enum ShapeType
    {
        Unknown = -1,
        Circle = 0,
        Rectangle = 1,
        TypeCount
    }

    public abstract class Shape 
    {
        public abstract ShapeType ShapeType { get; }

        public abstract Shape Clone();

        public abstract bool TestPoint(TSTransform transform, TSVector2 point);

        public abstract bool RayCast(out RayCastOutput output, RayCastInput input, TSTransform transform);

        public abstract void ComputeAABB(out AABB aabb, TSTransform transform);

        public abstract bool CompareTo(Shape shape);
    }
}


